package com.ruoyi.pos.domain.cashier;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;

/**
 * POS收银员设备关联实体类
 * 
 * 用于管理收银员与款台设备的多对多关联关系
 * 
 * @author POS System
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class PosCashierDevice extends BaseEntity {
    
    private static final long serialVersionUID = 1L;

    /**
     * 关联ID（主键）
     */
    private Long relationId;

    /**
     * 收银员ID
     */
    @Excel(name = "收银员ID")
    @NotNull(message = "收银员ID不能为空")
    private Long cashierId;

    /**
     * 设备ID
     */
    @Excel(name = "设备ID")
    @NotNull(message = "设备ID不能为空")
    private Long deviceId;

    /**
     * 是否默认设备(0否 1是)
     */
    @Excel(name = "是否默认", readConverterExp = "0=否,1=是")
    private String isDefault;

    /**
     * 是否启用(0否 1是)
     */
    @Excel(name = "是否启用", readConverterExp = "0=否,1=是")
    private String isEnabled;

    /**
     * 排序号
     */
    @Excel(name = "排序号")
    private Integer sortOrder;

    /**
     * 备注
     */
    @Excel(name = "备注")
    private String remark;

    // ==================== 扩展字段（非数据库字段） ====================

    /**
     * 收银员编号
     */
    @Excel(name = "收银员编号")
    private String cashierCode;

    /**
     * 收银员姓名
     */
    @Excel(name = "收银员姓名")
    private String cashierName;

    /**
     * 设备编码
     */
    @Excel(name = "设备编码")
    private String deviceCode;

    /**
     * 设备名称
     */
    @Excel(name = "设备名称")
    private String deviceName;

    // ==================== 业务方法 ====================

    /**
     * 判断是否启用
     */
    public boolean isEnabled() {
        return "1".equals(this.isEnabled);
    }

    /**
     * 判断是否为默认设备
     */
    public boolean isDefault() {
        return "1".equals(this.isDefault);
    }

    // ==================== 备用扩展字段 ====================
    
    /**
     * 备用字段1
     */
    private String reserved1;

    /**
     * 备用字段2
     */
    private String reserved2;

    /**
     * 备用字段3
     */
    private String reserved3;

    /**
     * 备用字段4
     */
    private String reserved4;

    /**
     * 备用字段5
     */
    private String reserved5;
}
